Lista= o colecţie de noduri (elemente), în care fiecare nod are un predecesor ( cu excepţia primului) şi un succesor (cu excepţia ultimului)

Lista poate fi implementată (alocată):
  • static- prin intermediul vectorilor, în segmentul de memorie stivă sau de date;
  • dinamic- în segmentul de memorie HEAP;
Operaţii care pot fi efectuate asupra unei liste:
  • creare;
  • actualizare (adăugări, modificări, ştergeri);
  • parcurgere;
  • splitare (divizare) in 2 sau mai multe liste;

Listele liniare alocate dinamic pot fi:
  • simplu înlănţuite: fiecare nod are legătură cu următorul (succesorul) nod din listă
  • dublu înlănţuite : fiecare nod are legătură atât cu succesorul cât şi cu predecesorul


Orice nod al unei liste liniare simplu înlănţuite alocate dinamic are următoarea structură ( neomogenă din punct de vedere al tipurilor de date, structură formată din cel puţin 2 câmpuri) :
nod2.png

# include <iostream>
typedef struct nod
{int info;
nod *urm; } ;
using namespace std;
int main()
{ nod *prim,*utim,*p;
prim=NULL; constanta predefinită NULL
prin care se indică o adresă inexistentă/nealocată
p=new nod; se rezerva spatiu de memorie în zona HEAP
…………………
delete(p); dezafectare spatiu de memorie alocat în zona HEAP
}
#include <iostream>
using namespace std;
int main()
{ struct nod
{int info;
nod *urm; } ;
nod *prim,*utim,*p..;
.............................
accesul la un anumit câmp din înregistrare
p->nume_câmp